<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 导入依赖 -->
    <script src="https://lib.baomitu.com/leaflet/1.9.2/leaflet.js"></script>
    <link rel="stylesheet" href="https://lib.baomitu.com/leaflet/1.9.2/leaflet.css">
    <style>
        * {
            margin: 0;
            padding: 0
        }

        #map {
            width: 100vw;
            height: 100vh;
        }

        #btn {
            position: fixed;
            z-index: 1000;
            width: 200px;
            height: 60px;
            top: 10px;
            right: 30px;
        }
    </style>
</head>

<body>
    <button id="btn" onclick="clearMarker()">清除标注</button>
    <div id="map">

    </div>
    <script>
        /* 瓦片图层 */
        var url = 'https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY2hlbmdiZW5jaGFvIiwiYSI6ImNsODU3aGRiODA0Y2UzcHBzZmFlcmdqZ2sifQ.8k59W_pB_Riwe6o-MneRlA'
        var layer = L.tileLayer(url, {
            maxZoom: 19,
            attribution: '© OpenStreetMap'
        })
        /* 实例化地图 */
        const map = L.map("map", {
            layers: [layer],
            /* center:[纬度,经度] */
            center: [30.50, 114.30],
            zoom: 4
        })
        /* 创建图层管理器 -- 集中管理图层 */
        // let layersGroup = new L.FeatureGroup();// 注意这里F为大写,且要new出来。
        let featureGroup = L.featureGroup();
        console.log(featureGroup instanceof L.Layer)// true
        // 图层管理器，也相当于一个图层
        // L.featureGroup用于将多个地图要素（features）组合在一起的容器。
        // 这可以包括点、线、多边形等地理要素。
        // L.FeatureGroup 允许你将多个要素组织在一起，然后一次性添加到地图上。
        // 这对于管理和操作多个要素非常有用。
        map.addLayer(featureGroup);
        map.on("click", evt => {
            var { lat, lng } = evt.latlng;
            let marker = L.marker([lat, lng]);
            featureGroup.addLayer(marker);
        })

        function clearMarker() {
            console.log(featureGroup)
            // console.log(featureGroup.getLayers());// 获取当前图层管理器上的所有图层组成的数组 // [e, e, e]
            featureGroup.clearLayers(); // 清除当前图层管理器上的所有图层
            // featureGroup.removeLayer() // 清除某个图层
        }
    </script>
</body>

</html>